﻿!function ($) {
	$.widget('codecontrib.watermark', {
		_create: function () {
			var $plugin = this;

			if (!$plugin.element.is('input')
				&& !$plugin.element.is('textarea')) {
				return;
			}

			$plugin._watermark = $('<input type="text" />');
			$plugin._watermark.attr('name', $plugin.element.attr('name'))
				.val($plugin.element.val())
				.hide()
				.insertAfter($plugin.element);

			$plugin.element.removeAttr('name');

			if (!$plugin.options.text) {
				$plugin.options.text = $plugin.element.clone().data('watermark');
			}

			$plugin.element.blur(function () {
				$plugin._addWatermark();
			})
			.change(function () {
				if (!$plugin._isWatermarked()) {
					$plugin._watermark.val($plugin.element.val());
				}
			})
			.focus(function () {
				$plugin._removeWatermark();
			});

			$plugin._addWatermark();
		},
		options: {
			text: ''
		},
		_addWatermark: function () {
			var $plugin = this;

			if (!$plugin.element.val().length
				&& !$plugin._isWatermarked()) {
				$plugin.element.toggleClass('watermarked')
					.val($plugin.options.text)
					.change();

				$plugin.element.blur();
			}
		},
		_isWatermarked: function () {
			var $plugin = this;

			return $plugin.element.hasClass('watermarked');
		},
		_removeWatermark: function () {
			var $plugin = this;

			if ($plugin._isWatermarked()) {
				$plugin.element.toggleClass('watermarked')
					.val('')
					.change();
			}
		}
	})
} (window.jQuery)